home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Diamond Collection / The Diamond Collection (Software Vault)(Digital Impact).ISO / cdr47 / sch250.zip / GENERAL.DOC < prev    next >
Text File  |  1995-02-16  |  28KB  |  639 lines

  1.  
  2.                                   SCHOONER
  3.                               Version 2.50 GUI
  4.                                User's Manual
  5.  
  6.  
  7.                           DISCLAIMER AND WARRANTY
  8.                               the small print
  9.  
  10.        Users of SCHOONER must accept this disclaimer of warranty:
  11.  
  12.        The   program is provided  "AS IS" without  warranty of any
  13.        kind,  either  expressed   or  implied, including  but  not
  14.        limited to  the implied warranties  of merchantability  and
  15.        fitness  for a particular   purpose. The entire risk as  to
  16.        the  quality and performance   of the program is with  you.
  17.        Should  the program  prove defective, you (and not Jonathan
  18.        Cook)  assume the  entire cost of all necessary  servicing,
  19.        repair or correction.
  20.  
  21.        Jonathan Cook does  not warrant that the function contained
  22.        in  the  program  will  meet your requirements or that  the
  23.        operation  of the  program  will be uninterrupted or  error
  24.        free.
  25.  
  26.        In  no  event will Jonathan  Cook  be liable to you for any
  27.        damages  including any  lost profits, lost savings or other
  28.        incidental or consequential  damages arising out of the use
  29.        or inability  to use such  program or for  any claim by any
  30.        other party.
  31.  
  32.   Please  read  the  Schooner  license  agreement  found  in  the  file
  33.   LICENSE.DOC. By using this software, you are bound by  the  terms  of
  34.   the license agreement.
  35.  
  36.  
  37.                          DEFINITION OF SHAREWARE
  38.                     Applies to shareware version only
  39.  
  40.   Shareware distribution  gives users  a chance to  try software before
  41.   buying it. If you try  a Shareware program and continue using it, you
  42.   are expected  to register.  Individual programs differ  on details --
  43.   some request  registration while  others require  it, some  specify a
  44.   maximum trial  period. With  registration, you get  anything from the
  45.   simple right  to continue  using the  software to  an updated program
  46.   with printed manual.
  47.  
  48.   Copyright laws  apply to both Shareware  and commercial software, and
  49.   the  copyright  holder  retains  all  rights,  with  a  few  specific
  50.   exceptions  as  stated  below.  Shareware  authors  are  accomplished
  51.   programmers, just  like commercial  authors, and the  programs are of
  52.   comparable quality. (In  both cases, there are  good programs and bad
  53.   ones!)  The main  difference is  in the  method of  distribution. The
  54.   author  specifically grants  the  right  to copy  and  distribute the
  55.   software,  either to  all  and sundry  or  to a  specific  group. For
  56.   example, some authors  require written permission before a commercial
  57.   disk vendor may copy their Shareware.
  58.  
  59.   Shareware  is a  distribution  method, not  a  type of  software. You
  60.   should find  software that  suits your needs  and pocketbook, whether
  61.   it's commercial or Shareware. The Shareware system makes fitting your
  62.   needs easier,  because you  can try before  you buy.  And because the
  63.   overhead  is low,  prices are  low also.  Shareware has  the ultimate
  64.   money-back guarantee --  if you don't use  the product, you don't pay
  65.   for it.
  66.  
  67.   SCHOONER 2.50 is  a "shareware program" and  is provided at no charge
  68.   to the user for evaluation.  Feel free to share it with your friends,
  69.   but please do not give  it away altered or as part of another system.
  70.   The  essence  of "user-supported"  software  is  to  provide personal
  71.   computer users with quality  software without high prices, and yet to
  72.   provide  incentive  for   programmers  to  continue  to  develop  new
  73.   products.
  74.  
  75.   If you find this program  useful and find that you are using SCHOONER
  76.   and continue  to use  SCHOONER after  a reasonable  trial period, you
  77.   must make  a registration  payment of $39.95  to Jonathan  Cook.  The
  78.   $39.95 registration  fee will  license one  copy for  use on  any one
  79.   computer at any  one time.  You must  treat this software just like a
  80.   book.  An example is  that this software may be used by any number of
  81.   people and may be freely moved from one computer location to another,
  82.   so long as  there is no possibility of  it being used at one location
  83.   while it's  being used at another.  Just as a book  cannot be read by
  84.   two different persons at the same time.
  85.  
  86.   Commercial users of  SCHOONER must register and  pay for their copies
  87.   of  SCHOONER  within  30  days  of  first  use  or  their  license is
  88.   withdrawn.    Site-License arrangements  may  be  made  by contacting
  89.   Jonathan Cook.
  90.  
  91.   Anyone distributing SCHOONER for  any kind of remuneration must first
  92.   contact Jonathan  Cook at  the address below  for authorization. This
  93.   authorization   will  be   automatically   granted   to  distributors
  94.   recognized by the  (ASP) as adhering to  its guidelines for shareware
  95.   distributors,  and  such  distributors  may  begin  offering SCHOONER
  96.   immediately (However Jonathan Cook  must still be advised so that the
  97.   distributor  can  be  kept  up-to-date  with  the  latest  version of
  98.   SCHOONER.).
  99.  
  100.   You are encouraged  to pass a copy of  SCHOONER along to your friends
  101.   for evaluation.  Please encourage them to register their copy if they
  102.   find that they can use  it.  All registered users will receive a copy
  103.   of the latest version of the SCHOONER system.
  104.  
  105.   Note:  Clipper(r),  Dbase and  Foxbase  are  registered  names and/or
  106.   trademarks of  Computer Associates, Borland  and Microsoft. Any other
  107.   name references,  expressed or  implied, are  registered names and/or
  108.   trademarks of their respective developers/manufacturers.
  109.  
  110.  
  111.                               INTRODUCTION
  112.  
  113.   Schooner is  a powerful, full  featured database programming language
  114.   similar to other Xbase languages.
  115.  
  116.   The  Schooner development  environment  revolves around  the powerful
  117.   text editor.  From this  command center  you can  develop and control
  118.   your application.
  119.  
  120.   You can write source code, code  reports,  create and modify database
  121.   structures, manipulate data and  execute your code... All from within
  122.   the text editor.
  123.  
  124.   In addition,  when errors are  detected, they are  displayed in a red
  125.   box. Schooner then places the  cursor on the line where the error was
  126.   detected, even if  the error occurred in a  module other than the one
  127.   you were editing.
  128.  
  129.   Command  and function  help are  just a  keypress away.  All language
  130.   documentation is on-line and available with the F1 help key.
  131.  
  132.  
  133.                             Getting Started.
  134.  
  135.   Schooner is  very easy to use.  Simply copy the  Sch250.exe file to a
  136.   subdirectory and change to that  subdirectory.  (Note:  If  you  have
  137.   downloaded Schooner from an  on-line  service,  substitute  the  file
  138.   Sch250.zip and use the PKZIP utility to decompress the file).
  139.  
  140.   Decompress the Schooner files for the registered version by typing:
  141.  
  142.             sch250.exe 
  143.  
  144.   (for the shareware version, please use the latest version of PKZIP.) 
  145.  
  146.   All of the files will decompress and you are ready to go.
  147.  
  148.   To begin Schooner type:
  149.  
  150.             Schooner
  151.  
  152.   and press ENTER.
  153.  
  154.   The Schooner logo will appear  (Note:  The  Schooner  shareware  logo
  155.   will appear with the shareware version). Press any key and the editor
  156.   will appear.
  157.  
  158.   While the editor appears simple, it will reveal a great deal with the
  159.   F1 key.
  160.  
  161.   Press F1 and the help  screen for the editor will appear. This screen
  162.   details all of the commands available to the editor.
  163.  
  164.   You  can cut  and paste  blocks of  text, read  and write  files (and
  165.   blocks) to and from disk and create and edit data files.
  166.  
  167.   Press the F2 key from the editor help screen and a list of all of the
  168.   commands and functions available to the language appear.
  169.  
  170.   Scroll through the list. A short description accompanies each command
  171.   or  function. Press  ENTER  on a  highlighted  line and  the complete
  172.   description for that command or function appears.
  173.  
  174.   Each description  contains the command or  function name, the syntax,
  175.   the  use,   a  parameter   description,  return   values,  a  general
  176.   description and an sample piece of code.
  177.  
  178.   Press ESC and  you will back out of the  help system the same way you
  179.   went in.
  180.  
  181.                            Viewing an Example
  182.  
  183.   An entire demo application is available for your viewing pleasure.
  184.  
  185.   Press F8 and enter the file name:
  186.  
  187.             DEMO250.PRG
  188.  
  189.   and press ENTER.
  190.  
  191.   The program DEMO250  will appear on the  screen. To experienced XBASE
  192.   programmers the code will immediately look familiar.
  193.  
  194.   Use the arrow  keys to scroll up and  down. When you are done viewing
  195.   the code, execute it. Press
  196.  
  197.                  Alt-R
  198.  
  199.   Schooner assumes  you want to  run the  code that is  loaded into the
  200.   editor. You will note  that the file name has changed to DEMO250.RUN.
  201.   In the blink of an eye the code has been saved and converted into the
  202.   RUN format for execution.
  203.  
  204.   In fact all programs  (.prg) are automatically saved and converted to
  205.   .run format whenever  you press Alt-R (or  CTRL-W). This assures that
  206.   your .prg and .run are in synch at all times.
  207.  
  208.   Play with the demo. When  done click on the EXIT icon from the start-
  209.   up screen and you will  return to the exact location in the editor at
  210.   which you left when you pressed Alt-R.
  211.  
  212.   The various programs  that make up the  demo are an excellent example
  213.   of  Schooner code.  As  mentioned above,  if  you have  experience in
  214.   Dbase(r), Foxbase(r) or  Clipper(r) you will recognize Schooner right
  215.   away.
  216.  
  217.                        Writing Your First Program
  218.  
  219.   From a  blank editor screen  press F8  and enter a  new program name.
  220.   Call it 'TEST.prg' for this example and press ENTER.
  221.  
  222.   Type in the following lines of code. Press ENTER after each line.
  223.  
  224.           clearscrn()
  225.           superbox(00,00,24,79,.T.,"",.f.)
  226.           mvcount=0
  227.           do while mvcount<50
  228.             message('The counter is: '+alltrim(str(mvcount)),'OFF')
  229.             mvcount=mvcount+1
  230.           enddo
  231.           message('DONE!!!')
  232.           quit
  233.  
  234.   When you are  done press ALT-R. This will  save and convert your code
  235.   to .RUN format. Press ENTER to accept the program to run and watch it
  236.   go...
  237.  
  238.   This little program  simply displays a counter  on the screen. But it
  239.   does give  you a  good idea  of how simple  a Schooner  program is to
  240.   write and run.
  241.  
  242.   In order to understand the  code better, press F1 then F2 and look up
  243.   each command and function in the on-line help.
  244.  
  245.  
  246.            Starting the Schooner Development System in Run Mode
  247.  
  248.   This version of  Schooner  now  comes  with  the  option  to  run  an
  249.   application directly from the  command  line.  To  run  your  program
  250.   directly from the DOS command line follow this format:
  251.  
  252.              Schooner <Filename>.run /r
  253.  
  254.   Example:
  255.  
  256.              schooner myprog.run /r
  257.  
  258.   The .RUN extension is required. The /R parameter  tells  Schooner  to
  259.   run your program directly and bypass the editor.
  260.  
  261.   The Schooner logo will appear. Press any  key  and  your  application
  262.   will begin.
  263.  
  264.   The /R option is available for  the  convenience  of  developers  who
  265.   might wish to run their personal applications  or  who  wish  to  use
  266.   their own editors to write code. The /R option should not be used  to
  267.   release runtime versions of your applications. To do so will use more
  268.   memory then the runtime system as well as display the  Schooner  logo
  269.   each time your application is run.
  270.  
  271.     
  272.              Compiling Your Application .prg Program Files
  273.  
  274.   The compile process is normally automatic when you press ALT-R within
  275.   the Schooner editor. This conveniently keeps your  source  .prg  code
  276.   and your compiled .run code in synch.
  277.  
  278.   However, you may wish to write your code in another  editor  of  your
  279.   choice (be sure to save your code in straight ASCII code without  any
  280.   hidden formatting characters). If so, you will need to  compile  your
  281.   .prg code into .run format.
  282.  
  283.   This is easily done with the stand  alone  Schooner  COMPILE  program
  284.   (not included with the shareware version  of  Schooner.  It  is  only
  285.   available with your Schooner registration). The compile program gives
  286.   you the added benefit of optimizing your .run code a bit by  allowing
  287.   your to remove blank lines and comments from your .run module.
  288.  
  289.   The compile program is run from the DOS prompt with the format:
  290.  
  291.           compile <filename>.prg </NB> </NC>
  292.  
  293.   Where <filename> is the name of your .prg program. The .prg extension
  294.   is required. The two optional parameters  are  /NB  to  remove  blank
  295.   lines and /NC to remove comments (note that removing blank lines  and
  296.   comments during the compile process only removes the lines  from  the
  297.   .run module and not your .prg source code).
  298.  
  299.   Since using your own editor in conjunction with the  compile  program
  300.   does not automatically synch your .run module with your  .prg  source
  301.   code, it is your responsibility to be sure that your .run modules are
  302.   compiled and in synch with your source code when  a  change  in  your
  303.   source code occurs.
  304.  
  305.   To run your newly compiled .run files, simply run them like any other
  306.   .run module with the Schooner runtime module (not included  with  the
  307.   shareware version  of  Schooner.  It  is  only  available  with  your
  308.   Schooner registration).  Or  you  can  run  them  with  the  Schooner
  309.   development program by passing the /R parameter to bypass the  editor
  310.   (see above).
  311.  
  312.   Although Schooner does not contain a MAKE facility, it is  very  easy
  313.   to create a simple make facility using the compile program  within  a
  314.   controling batch file. For example, you can create a  batch  file  to
  315.   reduce your typing effort:
  316.  
  317.              cls
  318.              compile %1 /NB /NC
  319.  
  320.   This simple batch file will compile the .prg file passed  to  it  and
  321.   remove blank lines and comments.
  322.  
  323.   You can expand this batch file to rebuild an  entire  application  by
  324.   coding multiple compile calls:
  325.  
  326.              compile myprog1.prg /NB /NC
  327.              compile myprog2.prg /NB /NC
  328.              compile myprog3.prg /NB /NC
  329.              compile myprog4.prg /NB /NC
  330.                      .
  331.                      .
  332.                      .
  333.                     etc.
  334.  
  335.   As you can see, compiling your applications with the compile  program
  336.   is quick, easy and provides the added flexibility of using the editor
  337.   of your choice.
  338.  
  339.  
  340.                          Using the Report Writer
  341.  
  342.   The Schooner  stand  alone  report  writer  (not  included  with  the
  343.   shareware version of  Schooner.  It  is  only  available  with   your
  344.   Schooner registration) allows you to create .frm and .lbl report  and
  345.   label  format  files  for  use  with  the  REPORTFORM()  function  in
  346.   Schooner.
  347.  
  348.   Because the report writer  allows  you  to  create  report  templates
  349.   instead of writing custom report code, you can save significant  time
  350.   when creating basic reports.
  351.  
  352.   To run the report writer, at the DOS prompt type:
  353.  
  354.              Reporter
  355.  
  356.   This will start the report writer. All documentation  is  on-line and
  357.   available by pressing the F1 key.
  358.  
  359.  
  360.                     Schooner Technical Specifications
  361.  
  362.   In  a nutshell,  Schooner has  virtually all  of the  capabilities of
  363.   Dbase III  plus(r) and  Clipper(r) Summer '87.  In addition, Schooner
  364.   supports a  whole set  of graphics,  imaging and  mouse functions not
  365.   found in either of the above languages.
  366.  
  367.   System Specifications:  IBM compatible  computers with  640k bytes of
  368.   RAM, hard  drive, one  floppy, DOS 5.0  (developed in  5.0 but should
  369.   work in version  3.30 or higher) and an  EGA or VGA color monitor for
  370.   Graphical User Interface (GUI) development.
  371.  
  372.        Field types:   Character........32K
  373.                       Numeric..........Max 19 bytes
  374.                       Date.............8 bytes
  375.                       Logical..........1 byte
  376.                       Memo.............Max 64k
  377.  
  378.        Indexing: Schooner supports indexing with the .NTX
  379.                  extension.
  380.  
  381.        Arrays:   Single dimensional arrays. Any data type.
  382.                  Arrays are declared with the PUBLIC command.
  383.  
  384.        Files:    Database........... .dbf
  385.                  Memos.............. .dbt
  386.                  Labels............. .lbl
  387.                  Reports............ .frm
  388.                  Program modules.... .prg
  389.                  Run modules........ .run
  390.                  Graphics Images.... .PCX
  391.                       Note: IMGSAVE() and IMGRESTORE() graphics images
  392.                       do not require extensions.
  393.  
  394.   Procedures and  Functions: Schooner handles  procedures much the same
  395.   way as Dbase III plus(r). Schooner User Defined Functions are handled
  396.   as described in the  on-line documentation. Functions can be included
  397.   in lines  of code  like any  compiled function  but they  cannot pass
  398.   parameters  (this  is done  by  declared  public  variables), contain
  399.   nested Schooner defined functions or call other Schooner procedures.
  400.  
  401.   Work Areas:  Schooner supports  9 open  files (work  areas) and index
  402.   combinations but not  to exceed the number  of files declared to DOS.
  403.   Each data file  must reside in its own  work area and can be accessed
  404.   by alias name or the FSELECT() function.
  405.  
  406.   Public: All  variables in Schooner are  declared as public (available
  407.   to all  procedures and functions)  either automatically when assigned
  408.   (mvname='John') or with the  PUBLIC command. All variable names start
  409.   with the letters MV and can contain a maximum of 10 letters.
  410.  
  411.        Operations:
  412.  
  413.             Math:     + addition
  414.                       - subtraction
  415.                       * multiplication
  416.                       / division
  417.                       % modulus
  418.                       ^ raised powers
  419.                      **   "      "
  420.  
  421.             Order:    Operations are solved from left to right.
  422.                       Parentheses are solved first
  423.                       Exponentiation are solved second
  424.                       Multiplication and division are third
  425.                       Addition and subtraction are last
  426.  
  427.             Relational:    < less than
  428.                            > greater than
  429.                            = equal
  430.                            <> not equal
  431.                            <= less than or equal
  432.                            >= greater than or equal
  433.                            $ contained within
  434.                            == exactly equal
  435.  
  436.             Logicals: .and.
  437.                       .or.
  438.                       .not.
  439.  
  440.             Strings:  + join two strings together
  441.                       - joins two strings together but trims any
  442.                         trailing spaces from the first.
  443.  
  444.   Passing  DOS Variables  to Schooner  Applications:  You can  pass DOS
  445.   information  to Schooner  by declaring  a DOS  variable with  the SET
  446.   command.  Use  the  GETE()   function  within  Schooner  to  get  the
  447.   environment  variable from  DOS. Be  sure that  the DOS  variable you
  448.   reference in the GETE() function is upper case. See GETE().
  449.  
  450.                             Memory Management
  451.  
  452.   You can manage the  use of memory with the following standard CLIPPER
  453.   DOS environment variable settings:
  454.  
  455.             Set CLIPPER=Vxxx;Rxxx;Fxxx;Sx;Exxx
  456.  
  457.   'V' controls  memory (in kbytes) used  for tracking memory variables.
  458.   If not defined  then 20% of available memory  is used (up to 44k) for
  459.   variables. Since  only 22 bytes  are used for  each variable, you can
  460.   provide more memory to the  rest of the system by declaring only that
  461.   which is really needed for variables to Schooner.
  462.  
  463.   'R'  controls the  RAM  used for  index  buffers (these  are internal
  464.   buffers and  not those declared  in your config.sys)  and the SHELL()
  465.   function. Unless  you are going  to SHELL()  to DOS, set  this to the
  466.   minimum 16K.
  467.  
  468.   'F' overrides the files setting in Config.sys (but cannot exceed it).
  469.   This can be helpful in managing the number of open files Schooner can
  470.   use.
  471.  
  472.   'S' can  help to  control snow  effects on  older monitors.  Set to 1
  473.   (one) will help eliminate snow.
  474.  
  475.   'E' controls the amount of  Expanded memory Schooner can use, up to a
  476.   maximum of 1  megabyte. When available, expanded  memory is only used
  477.   for index buffering. Out  of memory conditions created as a result of
  478.   the MS DOS 5.00 and 6.00 EMM386.sys NOEMS option can be eliminated by
  479.   setting E to 000.
  480.  
  481.   You do not need to declare the CLIPPER variable to DOS, Schooner will
  482.   simply use the defaults. However, in tight memory environments it can
  483.   help your applications manage memory better.
  484.  
  485.  
  486.                      Programming GUI Applications
  487.  
  488.   One  of the  great advantages  to  creating Graphical  User Interface
  489.   (GUI) applications in Schooner is that it is as easy as creating text
  490.   applications. In  fact, you will develop  GUI applications in exactly
  491.   the same  way as text  applications. The only  difference is that you
  492.   will substitute GUI screen  display functions for text screen display
  493.   functions. All other non-screen display functions work the same.
  494.  
  495.   In addition,  you can switch  back and forth  between GUI screens and
  496.   text screens as  desired, saving and restoring  both types of screens
  497.   as needed.
  498.  
  499.   The  most difficult  part of  GUI programming  is dealing  with color
  500.   palette oddities.  Color  palettes are the internal tables that track
  501.   what colors appear on the screen.
  502.  
  503.   Schooner supports EGA 640x350  16 color mode and VGA 640x480 16 color
  504.   mode for  all GUI functions.  Schooner also supports  VGA 320x200 256
  505.   color mode for most GUI functions.
  506.  
  507.   The difficult aspect of color  palettes is due to the fact that there
  508.   is no color palette  standard for IBM systems. Each image created for
  509.   display on an IBM system contains its own color palette. This palette
  510.   can  be completely  different  from  another image,  even  though the
  511.   images  where  designed  to   be  displayed  in  the  same  mode  and
  512.   resolution. The  end effect  is that the  last image  to be displayed
  513.   instantly applies its palette  to the system and quite often destroys
  514.   the previous images and elements on the screen.
  515.  
  516.   There are  two solutions to this  dilemma: The first  is to never use
  517.   two images on  the same screen at  the same time and  to never use an
  518.   image on the  screen at the same time  that other GUI elements are on
  519.   the screen. This solution, for obvious reasons is worthless.
  520.  
  521.   The second solution is to  be sure that all elements on the screen at
  522.   the same  time have the  same palette. This  solution creates its own
  523.   difficulties but is much more practical.
  524.  
  525.   The easiest way  to get images with the  same palettes is to get them
  526.   all from  the same  source where  you can  control the  palette. Most
  527.   paint programs will apply the same palette to each picture created in
  528.   it.  This works  well  for creating  icons  (for Schooner,  these are
  529.   simply small  .PCX images) as  well as wallpapers  and static screens
  530.   designed for background purposes.
  531.  
  532.   Scanned images which use the same scanner and software will generally
  533.   also  fall into  this category.  However,  the scanning  software, if
  534.   different from the  paint program, may have  a different palette. One
  535.   possible  way around  this  is to  establish  a standard  palette and
  536.   default background in your paint program and then import your scanned
  537.   image on  top of the  background. This  may set the  palette for your
  538.   image. Experiment with this idea as each paint program is different.
  539.  
  540.   Another way  to standardize  your palettes is  with specialty imaging
  541.   software that  has tools specifically  designed to equalize palettes.
  542.   This is the best solution but may cost more.
  543.  
  544.   When building a GUI screen follow these general guidelines:
  545.  
  546.             Set your GRAPHMODE() with 0,2 or 6
  547.  
  548.             Establish  a  background  wallpaper.  Wallpaper  is nothing
  549.             fancy,  it is  simply  a  full screen  .PCX  image  that is
  550.             "FLASHed"  onto  the screen  (see  the  IMGPCX() function).
  551.             Wallpaper can  be any design  you like. Be  sure its format
  552.             matches the GRAPHMODE() set and has the palette desired.
  553.  
  554.             From this point on,  you are free to draw your GUI elements
  555.             as well as "SCROLL"  as many .PCX images onto the screen as
  556.             you  like (provided  they  have  the same  palette  as your
  557.             wallpaper).
  558.  
  559.             When setting the GRAPHCOLOR() and color parameters for each
  560.             of your  GUI elements  be sure that  you know  the first 16
  561.             colors  of the  palette that  has been  set. These  are the
  562.             colors that will make up your GUI elements. The easiest way
  563.             to view  the first 16  colors is to  write a little program
  564.             which loops through the  first 16 colors and displays a box
  565.             with each color change.
  566.  
  567.   For all  practical purposes,  developing GUI  applications in 320x200
  568.   256 color  mode is  not advisable.  There is  just not  enough screen
  569.   resolution  to  display the  objects  necessary  to  create  a useful
  570.   application. This  mode is  good however, for  displaying full screen
  571.   images and you can take advantage of it for just that.
  572.  
  573.  
  574.                           Programming the Mouse
  575.  
  576.   The mouse is automatically  available in graphics mode as soon as the
  577.   MSRESET()  function is  called. It  becomes  visible and  active when
  578.   MSCRSORON()  is called  and  becomes invisible  when  MSCRSOROFF() is
  579.   called.
  580.  
  581.   There is really nothing  special about programming for the mouse. For
  582.   the  most part  you will  call  the MSWAIT()  function to  pause your
  583.   program and wait for a mouse event.
  584.  
  585.   When  a mouse  event occurs,  your program  will continue.  Much like
  586.   checking for  a menu  selection, you  will use  a series  of IF-ENDIF
  587.   statements to check the MSINSIDE() function. MSINSIDE() returns a .t.
  588.   if the last mouse event occurred within a specified area.
  589.  
  590.   The only mouse  oddity to be aware  of is this: If  the mouse is left
  591.   turned on and  active at the time that  a GUI screen element is being
  592.   created, the  mouse can  leave "droppings" and  "trails" behind. This
  593.   looks like holes in the screen when the mouse is next moved.
  594.  
  595.   Simply turn the  mouse off when new GUI  elements are to be drawn and
  596.   turn it back on when complete.
  597.  
  598.   See the DEMO250 version 2.50 demonstration program for examples.
  599.  
  600.                           Network Applications
  601.  
  602.   Schooner  should be  compatible with  most  local area  networks that
  603.   recognize the Clipper(r) method  of record and file locking. However,
  604.   we do  not have a  LAN of our  own to test  with and cannot guarantee
  605.   networking compatibility.
  606.  
  607.   In general, writing applications for networks is pretty easy. Observe
  608.   the following:
  609.  
  610.   Open 'shared', all files  that reside on servers that will be shared.
  611.   Open other  files (especially  those that reside  on the  node PC) as
  612.   exclusive.
  613.  
  614.   All shared files must use record or file locking in order to lock the
  615.   record or  file for  exclusive use by  the requesting  node. Only the
  616.   locking node can modify the record or file. Others, however, can read
  617.   the file.
  618.  
  619.   Be sure to  unlock the record or file  when done so others can access
  620.   the record or file.
  621.  
  622.   Reference the  NETERR() function when  performing network activities.
  623.   This can help you determine error conditions that might arise.
  624.  
  625.   It  is recommended  that  you use  record  locking for  virtually all
  626.   network activities. This  leaves the rest of  the file open for other
  627.   users to  access and provides  better speed as  more users access the
  628.   file.
  629.  
  630.   However, OPEN()  the file  exclusively for such  activities as FZAP()
  631.   which will delete and pack the whole file.
  632.  
  633.  
  634.                                 Error Messages
  635.  
  636.   Please see the file ERRORS.DOC for a description of Schooner  runtime
  637.   error messages.
  638.  
  639.